Namespace Datos

    Public Class clConfIdioma
        Dim _nombreCultura As String
        Dim _tablaDatosIdioma As String

        Public Sub New()

        End Sub
        Public Sub New(ByVal nombreCultura As String, ByVal tablaDatosIdioma As String)
            _nombreCultura = nombreCultura
            _tablaDatosIdioma = tablaDatosIdioma
        End Sub
        Public Property cultura() As String
            Get
                Return _nombreCultura
            End Get
            Set(ByVal value As String)
                _nombreCultura = value
            End Set
        End Property
        Public Property tablaDatosIdioma() As String
            Get
                Return _tablaDatosIdioma
            End Get
            Set(ByVal value As String)
                _tablaDatosIdioma = value
            End Set
        End Property
        Public Sub setDatoString(ByVal hijo As Object, ByVal objetoBase As bitworksComunesV3.Datos.camposAtributos, ByVal valorOriginal As Object)
            If objetoBase.Propiedad.PropertyType Is GetType(String) AndAlso _nombreCultura Is Nothing = False AndAlso _tablaDatosIdioma Is Nothing = False AndAlso CType(hijo, Datos.clTablaGenerica).getLlavePrimaria.Count = 1 AndAlso CType(hijo, Datos.clTablaGenerica).getLlavePrimaria(0).Propiedad.PropertyType Is GetType(Integer) Then 'ojo esto solo funciona con codigo autonumericos de llave primaria
                Dim aux As String = extraerDatoIdmAlterno(hijo, objetoBase)
                If aux Is Nothing Then
                    objetoBase.setData(hijo, valorOriginal)
                Else
                    objetoBase.setData(hijo, aux)
                End If
                ' If aux Is Nothing = False Then
                'objetoBase.setData(hijo, extraerDatoIdmAlterno(hijo, objetoBase))

                'Else

                ' End If

            Else
                objetoBase.setData(hijo, valorOriginal)
            End If

        End Sub
        Private Function extraerDatoIdmAlterno(ByVal hijo As Object, ByVal objetoBase As bitworksComunesV3.Datos.camposAtributos) As String
            Dim cerrar As Boolean = False
            Dim cnnAux As New SqlClient.SqlConnection(bitworksComunesV3.Datos.clCapaDatos.Conexion.ConnectionString)
            If bitworksComunesV3.Datos.clTablaGenerica.cnnShared.State = ConnectionState.Closed Then
                '  bitworksComunesV3.Datos.clTablaGenerica.cnnShared.Open()
                cerrar = True
            End If
            Dim aux As String
            Dim sql As String
            Dim cmd As IDbCommand
            If TypeOf bitworksComunesV3.Datos.clTablaGenerica.cnnShared Is Data.SqlClient.SqlConnection Then
                sql = String.Format("select texto from {0} where campo=@campo and idioma=@idioma and nombreTabla=@tabla and codigo=@codigo", _tablaDatosIdioma)
                cmd = New SqlClient.SqlCommand(sql, cnnAux)
                With CType(cmd, SqlClient.SqlCommand).Parameters
                    .Add("@campo", SqlDbType.VarChar).Value = objetoBase.Atributo.nombreCampoBase
                    .Add("@idioma", SqlDbType.VarChar).Value = _nombreCultura
                    .Add("@tabla", SqlDbType.VarChar).Value = CType(hijo, Datos.clTablaGenerica).nombreTabla
                    .Add("@codigo", SqlDbType.Int).Value = CType(hijo, Datos.clTablaGenerica).getLlavePrimaria(0).getData(hijo)
                End With
            ElseIf TypeOf bitworksComunesV3.Datos.clTablaGenerica.cnnShared Is Data.OracleClient.OracleConnection Then
                sql = String.Format("select texto from {0} where campo=:campo and idioma = :idioma and nombreTabla=:tabla and codigo=:codigo", _tablaDatosIdioma)
                cmd = New Data.OracleClient.OracleConnection(sql)
                cmd.Connection = bitworksComunesV3.Datos.clTablaGenerica.cnnShared
                With CType(cmd, OracleClient.OracleCommand).Parameters
                    .Add(":campo", OracleClient.OracleType.VarChar).Value = objetoBase.Atributo.nombreCampoBase
                    .Add(":idioma", OracleClient.OracleType.VarChar).Value = _nombreCultura
                    .Add(":tabla", OracleClient.OracleType.VarChar).Value = CType(hijo, Datos.clTablaGenerica).nombreTabla
                    .Add(":codigo", OracleClient.OracleType.VarChar).Value = CType(hijo, Datos.clTablaGenerica).getLlavePrimaria(0).getData(hijo)
                End With
            ElseIf TypeOf bitworksComunesV3.Datos.clTablaGenerica.cnnShared Is MySql.Data.MySqlClient.MySqlConnection Then
                sql = String.Format("select texto from {0} where campo=?campo and idioma =?idioma and nombreTabla=?tabla and codigo=?codigo", _tablaDatosIdioma)
                cmd = New MySql.Data.MySqlClient.MySqlCommand(sql, bitworksComunesV3.Datos.clTablaGenerica.cnnShared)
                With CType(cmd, OracleClient.OracleCommand).Parameters
                    .Add("?campo", OracleClient.OracleType.VarChar).Value = objetoBase.Atributo.nombreCampoBase
                    .Add("?idioma", OracleClient.OracleType.VarChar).Value = _nombreCultura
                    .Add("?tabla", OracleClient.OracleType.VarChar).Value = CType(hijo, Datos.clTablaGenerica).nombreTabla
                    .Add("?codigo", OracleClient.OracleType.VarChar).Value = CType(hijo, Datos.clTablaGenerica).getLlavePrimaria(0).getData(hijo)
                End With
            End If
            cnnAux.Open()
            Dim lector As IDataReader = cmd.ExecuteReader
            If lector.Read Then
                aux = lector.GetString(0)
            End If
            lector.Close()
            cnnAux.Close()

            '   If cerrar Then bitworksComunesV3.Datos.clTablaGenerica.cnnShared.Close()
            Return aux

        End Function

    End Class
End Namespace